/*
 * Powered By XY
 * Since 2020
 */

package com.xy.biz.xd.service;

import com.xy.biz.xd.domain.bo.TechniqueBO;
import com.xy.biz.xd.domain.query.TechniqueByIdQuery;
import com.xy.biz.xd.domain.query.TechniqueQuery;
import com.xy.lang.domain.Result;

import java.util.Collection;
import java.util.List;

/**
 *
 *
 * @author zgy
 * @date 2022-1-11
 */
public interface TechniqueService {

    /**
     * 保存
     *
     * @param techniqueBO
     */
    Result<?> saveTechnique(TechniqueBO techniqueBO);

    /**
     * 保存多个
     *
     * @param collection
     */
    Result<?> saveAllTechnique(Collection<TechniqueBO> collection);

    /**
     * 更新
     *
     * @param techniqueBO
     */
    Result<?> updateTechnique(TechniqueBO techniqueBO);

    Result<?> copyTechnique(Long techniqueId);

    /**
     * 删除
     *
     * @param techniqueId
     */
    Result<?> deleteTechnique(Long techniqueId);

    /**
     * 查找一个
     *
     * @param query
     * @return
     */
    TechniqueBO getTechnique(TechniqueByIdQuery query);

    /**
     * 查找多个
     *
     * @param collection 标识集合
     */
    List<TechniqueBO> listTechniqueById(Collection<Long> collection);

    /**
     * 查找多个
     *
     * @param query 查找条件
     */
    List<TechniqueBO> listTechnique(TechniqueQuery query);

    /**
     * 统计个数
     *
     * @param query 查找条件
     */
    int countTechnique(TechniqueQuery query);

}
